kai.ko

2023.11.10

AWS App RunnerとGitHubでサクッとWebサーバを立ち上げる

概要

開発をしていると「外部からアクセスできるWebサーバをサクッと立ち上げたい!けどデプロイとか面倒!」って思いますよね?そんな時にAWS App Runnerが便利ですよって話です。

ローカルのWebサーバを外部公開したい!ってときにはngrokが便利ですよね。ここでは話しません。

AWS App Runnerとは

AWS App Runnerは、AWSが提供するフルマネージドサービスで、開発者が高速にコンテナ化アプリケーションをデプロイ、スケールすることを可能にします。ソースコードかコンテナイメージからアプリケーションを自動的に作成・運用・管理できます。デプロイメント、スケーリング、ヘルスチェック、監視等の難しかったタスクを容易に、またコスト効率よく行えます。これにより開発者は事業の本質に集中できるようになります。

AWS App Runnerの似たようなサービス

AWSやGoogle Cloudで他にも似たような価値を提供するサービスがたくさんあります。

AWS

  • AWS Elastic Beanstalk: デプロイとスケーリングを自動化するフルマネージドサービスで、Webアプリケーションとサービスの実行に最適化されています。
  • AWS Fargate: サーバーレスのコンテナエンジンで、EC2インスタンスのプロビジョニングや管理を気にすることなく、コンテナを実行できます。
  • AWS Lambda: サーバレスコンピューティングサービスで、コードを実行して応答するために必要なすべてのインフラストラクチャと管理を自動化します。
  • Amazon ECS: 高度にスケーラブルで高速なコンテナ管理サービスで、Dockerコンテナを簡単に実行できます。

Google Cloud

  • Google App Engine: 完全に管理された、ゼロからスケールするサーバレスプラットフォームで、アプリケーション開発、ホスティング、スケーリングを自動化します。
  • Google Cloud Run: 容易にコンテナをサーバレスで実行できるフルマネージド環境を提供します。あらゆる種類のアプリケーションやミドルウェアスタックもサポートしています。
  • Google Kubernetes Engine(GKE): コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を簡単にするための安全で効率的な環境を提供するKubernetesサービス。

これらの各サービスは、開発者がインフラストラクチャ管理から解放され、コードの実装に専念できるように設計されています。

個人的にイケてると思う点

AWS App RunnerとGitHubを組み合わせることで、開発者のライフがぐっと楽になります。コードを書き終えてGitHubにプッシュすると、あとはAWS App Runnerがすべて面倒を見てくれます。ビルド、テスト、デプロイまですべて自動でやってくれるんですから、これ以上ないくらいストレスフリーです。

何時間もかけて手動でデプロイする日々はもう終わり。更新を素早くユーザーに提供でき、開発者はもっと創造的なコーディングに集中できます。まさに開発者の親友とも言える機能です!

AWS App RunnerでサクッとWebサーバを立ち上げてみる

前提

MacOSを利用する手順となります。

手順

  • 必要なツールをインストールします。
  • Git: 既にインストールされていない場合は、Terminalでxcode-select --installを実行してください。
  • AWS CLI: AWS公式ガイドを参照し、Homebrewなどでインストールしてください。
  • GitHub CLI: Terminalで brew install gh を実行しましょう。
  • GitHubへの接続を設定します。
    • SSH鍵を生成: ssh-keygen -t ed25519 -C "your_email@example.com"
    • 公開キー(id_ed25519.pub)をコピーして、GitHubの設定からSSH Keysに追加します。
  • ローカルで新しいリポジトリを作成します。

  • リポジトリ内にWebページのコードを含んだindex.htmlファイルを作成します。
  • GitHub CLIを利用して新しいリポジトリを作成します。

  • ローカルの変更をコミットし、GitHubにプッシュします。

  • AWSにログインし、AWS CLIを用いてApp Runnerの設定を進めます。

コマンド実行の後で、AWSマネジメントコンソールでの操作(ハンドシェイク)が必要となります。

AWS CLIでサービスを作成するコマンドは以下となります。

AuthenticationConfiguration には aws apprunner create-connection コマンドで作成されたリソースの Arn を指定します。

※現時点(2023/10/14)ではうまくいきませんでした。おそらくは先日リリースされたWAF対応がCLIに反映されてない気がします。

AWSマネジメントコンソールで確認するとデプロイが走っていることが確認できます。

AWS CLIコマンドでも確認できます。

が、、、下記のエラーメッセージが表示されてデプロイに失敗するので、今回は諦めてマネジメントコンソールで作業します。

しばらく待ってるとデプロイが完了します。

デフォルトドメイン にアクセスするとページが表示されます。やったぜ

終わりに

今回BLOG記事を執筆するのにchatGPTさんに色々と助けてもらいました。

構築手順も提案してくれましたが、うまく動作しないケースがあり必ず検証は必要ですが、だいぶと効率化を図ることができました。

ぶっちゃけもう説明系の記事は書く必然性を感じなくなってしまいましたw

自己紹介

最後の最後に自己紹介です。

2023年2月に入社してプロダクトカンパニーにてLetroの開発にPjMとして関わっている甲斐です。

前職でQiita上でいっぱいBlog記事を書いてましたが最近はさっぱり。よかったら見てね。